package w83b.w83bOperacionesInternas.w83bLotesPreavisos;



import java.util.HashMap;
import java.util.Map;

import w83b.Thread.W83bNotificacionThread;
import w83b.w83bBeans.W83bLotesPreavisosBean;
import w83b.w83bBeans.W83bUsuarioXLNetsBean;
import w83b.w83bUtilidadesComunes.W83bSolicitudPreaviso;
import w83b.w83bUtilidadesComunes.W83bClsConstantes;
import w83b.w83bUtilidadesComunes.W83bClsTrazas;
import es.ejie.frmk.negocio.operacioninterna.Q70OperacionInterna;
import es.ejie.frmk.negocio.operacioninterna.Q70OperacionInternaConfigBean;
import es.ejie.frmk.negocio.operacioninterna.Q70OperacionInternaErrors;
import es.ejie.frmk.presentacion.sesiondatos.Q70ContextoEJIE;

public class W83bNotificacionesOIAction extends Q70OperacionInterna {

	protected void preProcessMappingEntrada(Q70ContextoEJIE contexto, Q70OperacionInternaConfigBean configBean, Q70OperacionInternaErrors errors) throws Exception{

		W83bClsTrazas.trazaError(null, "@@@@@@@@@@@ W83bNotificacionesOIAction w83bUsuarioXLNets @@@@@@@@@@@@",null);
			W83bUsuarioXLNetsBean usuario = (W83bUsuarioXLNetsBean)contexto.get("w83bUsuarioXLNets");
			W83bClsTrazas.trazaError(null, "@@@@@@@@@@@ W83bNotificacionesOIAction despues de w83bUsuarioXLNets @@@@@@@@@@@@",null);
			
			usuario.setIdioma((String)contexto.get("w83bCgaIdioma"));
			
			String firma = (String)contexto.get("firmaEjgv");//NOPMD
			String nombreFichero = (String)contexto.get("nombreFichero");//NOPMD
			//String codSindicato = (String)contexto.get("codSindicato");//NOPMD
			W83bLotesPreavisosBean w83bPreavisosNuevoBean = (W83bLotesPreavisosBean)contexto.get("w83bPreavisoNuevoBean");//NOPMD
			Map mapa = (HashMap)contexto.get("w83bResultadoMapa");//NOPMD
			
			w83bPreavisosNuevoBean.setFirma(firma);
			w83bPreavisosNuevoBean.setNombreFichero(nombreFichero);
			w83bPreavisosNuevoBean.setCodSindicato((String)mapa.get("codSindicato"));
			
			String documentoImportadoOriginal = (String)contexto.get("documentoImportadoOriginal");//NOPMD
			w83bPreavisosNuevoBean.setDocumentoImportadoOriginal(documentoImportadoOriginal);
			
			w83bPreavisosNuevoBean.setIdioma((String)contexto.get(W83bClsConstantes.CONSTANTE_CONTEXTO_IDIOMA));
			
			w83bPreavisosNuevoBean.setUsuarioBean(usuario);
			
			/*String sesionToken1 = W83bNotificacionThread.getTokenXLNets("w83a");
			
			int i=0;
		      while (i<sesionToken1.toString().length()){
		    	  if (i<sesionToken1.toString().length()-100){
		    		  W83bClsTrazas.trazaError(null,"sesionToken1="+sesionToken1.toString().substring(i, i+100),null);
		    	  }
		    	  else{
		    		  W83bClsTrazas.trazaError(null,"sesionToken1="+sesionToken1.toString().substring(i, sesionToken1.toString().length()),null );
		    	  }
		    	  i=i+100;
		      }
			*/
			//DESARROLLO
        	String sesionToken = W83bNotificacionThread.getTokenXLNets("w83b");
        	
        	/*i=0;
		      while (i<sesionToken.toString().length()){
		    	  if (i<sesionToken.toString().length()-100){
		    		  W83bClsTrazas.trazaError(null,"sesionToken="+sesionToken.toString().substring(i, i+100),null);
		    	  }
		    	  else{
		    		  W83bClsTrazas.trazaError(null,"sesionToken="+sesionToken.toString().substring(i, sesionToken.toString().length()),null );
		    	  }
		    	  i=i+100;
		      }
        	*/
        	
        	
        	//LOCAL
        	//String sesionToken = W83ANotificacionThread.leerFichero("c:/config/p16b/Tokenw83a.xml", false);
        	//w83aPreavisosNuevoBean.setSessionTokenXLNET(usuario.getSessionTokenXLNets());
        	w83bPreavisosNuevoBean.setSessionTokenXLNET(sesionToken);
			
			W83bSolicitudPreaviso solicitudPreaviso =  (W83bSolicitudPreaviso) contexto.get("solicitudPreaviso");
			w83bPreavisosNuevoBean.setSolicitudPreaviso(solicitudPreaviso);
			w83bPreavisosNuevoBean.setCodPromotor(solicitudPreaviso.getSindicato());
			
			contexto.set("w83bPreavisoNuevoBean",w83bPreavisosNuevoBean);

			
			/*Q70ContextoEJIE ctx = (Q70ContextoEJIE) contexto;
			
			String sessionTokenXLNET = (String)ctx.get(W83bClsConstantes.XLNETS_APLICATIONSESSIONTOKEN);
			
			String dniXLNET = (String)ctx.get(W83bConstantes.XLNETS_USUDNI);
			String oidUsuarioXLNET = W83bUsuariosDAO.W83bObtenerOidUsuario(dniXLNET);
			W83bUsuarioDTO usuarioXLNET = W83bUsuariosDAO.W83bBuscarUsuarioOid(oidUsuarioXLNET);
			String nombreDelFichero = (String) ctx.get("nombreDelFicheroPreavisos");
			String territorioUsuarioXLNET = W83bUsuariosDAO.W83bObtenerTerritorioUsuario(dniXLNET);
			String idDocusi = (String) contexto.get("idDokusi");

            String idLote = (String)ctx.get("idLotePreaviso");
            W83bSolicitudPreaviso solicitudPreaviso = null;

            solicitudPreaviso = (W83bSolicitudPreaviso) ctx.get("solicitudPreaviso");
            
			
            W83bInformacionProcedimiento info = (W83bInformacionProcedimiento) contexto.get("info");

            ArrayList listaSindicatos = (ArrayList) W83bUsuariosDAO.W83bBuscaUsuariosNotificacion(territorioUsuarioXLNET);
            

            
            W83bTrazas.depura(" Numero de sindicalistas a Notificar: " +listaSindicatos.size());
            W83bNotificacionesDTO informacionNotificacion= new W83bNotificacionesDTO(dniXLNET, usuarioXLNET.getNombreUsuario(), idDocusi, nombreDelFichero, idLote, sessionTokenXLNET, territorioUsuarioXLNET);
            W83bNotificacionThread tareaNotificar=new W83bNotificacionThread(listaSindicatos,info,solicitudPreaviso,informacionNotificacion,W83bConstantes.IDA);
            tareaNotificar.start();
            

            ctx.set("w83b_nextForward", "ok");
*/
			
		
	}
	
	protected void postProcessMappingSalida(Q70ContextoEJIE contexto, Q70OperacionInternaErrors errors) throws Exception {
			
			/*ServletOutputStream out = response.getOutputStream();
			Blob documento=(Blob)contexto.get("ficheroIda");    
	        
	        InputStream inStream = documento.getBinaryStream();
	        
	        response.setContentType("application/octet-stream");
	        response.setHeader("Content-Disposition","attachment;filename=nombreeeeee");
			
	        byte[] outputByte = new byte[4096];
	        while(inStream.read(outputByte, 0, 4096) != -1){
	        	out.write(outputByte, 0, 4096);
	        }
	        inStream.close();
	        out.flush();
	        out.close();
	*/
		
		W83bLotesPreavisosBean w83bPreavisosNuevoBean = (W83bLotesPreavisosBean)contexto.get("w83bDatosPreavisoNuevoBean");//NOPMD
		
		
		contexto.set("w83bPreavisoNuevoBean",w83bPreavisosNuevoBean);
		contexto.set("fechaRegES", w83bPreavisosNuevoBean.getFechaRegES());
		contexto.set("numeroRegES", w83bPreavisosNuevoBean.getNumRegES());
		contexto.set("tamanyoListaSindicatos", w83bPreavisosNuevoBean.getListaSindicatosTam());

		super.postProcessMappingSalida(contexto, errors);
			
	}
}